/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import clases.AlmacenArticulo;
import clases.Compra;
import clases.DetalleCompra;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Edder
 */
public class MdlDetalleCompra implements Modelo<DetalleCompra>{

    @Override
    public void insert(DetalleCompra objeto, Conexion cnx) throws SQLException {
        String sql = "INSERT INTO detallecompra(idCompra, idAlmacenArticulo, cantidad, precio, igv) "
                + "VALUES(" + objeto.getCompra().getIdCompra() + ", "
                + objeto.getAlmacenArticulo().getIdAlmacenArticulo() + ", "
                + objeto.getCantidad() + ", "
                + objeto.getPrecio() + ", "
                + objeto.getIgv() + ");";
        cnx.ejecutar(sql);
    }

    @Override
    public int getLastId(Conexion cnx) throws SQLException {
        String sql = "SELECT MAX(idDetalleCompra) FROM detallecompra";
        ResultSet rs = cnx.consultar(sql);
        if(rs.next())
            return rs.getInt(1);
        return -1;
    }

    @Override
    public void update(DetalleCompra objeto, Conexion cnx) throws SQLException {
        String sql = "UPDATE detallecompra SET "
                + "idCompra = , "
                + "idAlmacenArticulo = , "
                + "cantidad = , "
                + "precio = , "
                + "igv = "
                + "WHERE idDetalleCompra = " + objeto.getIdDetalleCompra();
        cnx.ejecutar(sql);
    }
    
    public ArrayList<DetalleCompra> getDetalleCompras_compra(int idCompra, Conexion cnx) throws SQLException{
        String sql = "SELECT * FROM detallecompra WHERE idCompra = " + idCompra;
        return get(sql, cnx);        
    }

    @Override
    public ArrayList<DetalleCompra> get(String query, Conexion cnx) throws SQLException {
        ArrayList<DetalleCompra> detallecompras = new ArrayList<>();
        ResultSet rs = cnx.consultar(query);
        while(rs.next()){
            detallecompras.add(new DetalleCompra(
                    rs.getInt(rs.getInt("idDetalleCompra")),
                    new Compra(){
                        {
                            this.setIdCompra(rs.getInt("idCompra"));
                        }
                    },
                    new AlmacenArticulo(){
                        {
                            this.setIdAlmacenArticulo(rs.getInt("idAlmacenArticulo"));
                        }
                    },
                    rs.getInt("cantidad"),
                    rs.getFloat("precio"),
                    rs.getFloat("igv"))
            );
        }
        return detallecompras;
    }

    @Override
    public DetalleCompra get(int id, Conexion cnx) throws SQLException {
        String sql = "SELECT * FROM detallecompra where idDetalleCompra = " + id;
        ResultSet rs = cnx.consultar(sql);
        if(rs.next())
            return new DetalleCompra(
                    rs.getInt(rs.getInt("idDetalleCompra")),
                    new Compra(){
                        {
                            this.setIdCompra(rs.getInt("idCompra"));
                        }
                    },
                    new AlmacenArticulo(){
                        {
                            this.setIdAlmacenArticulo(rs.getInt("idAlmacenArticulo"));
                        }
                    },
                    rs.getInt("cantidad"),
                    rs.getFloat("precio"),
                    rs.getFloat("igv"));
        return null;
    }
    
}
